【cuda+opencl安装记录】ubuntu18.04+cuda(含opencl)+cudnn

您所在的位置:网站首页 qt opencl调用 【cuda+opencl安装记录】ubuntu18.04+cuda(含opencl)+cudnn

【cuda+opencl安装记录】ubuntu18.04+cuda(含opencl)+cudnn

2024-07-10 09:04| 来源: 网络整理| 查看: 265

只要是从英伟达官方下载的cuda包,那么opencl就是包含在里面的。

我参考的三篇博文:一、    二、   三     感谢各位博主!

一、安装英伟达显卡驱动,网上博客很多,不再赘述。

二、安装cuda和cudnn

网上教程也很多,推荐一篇

(安装并配置好cuda后,命令行输入nvcc --version可显示cuda版本号。)

三、配置opencl

opencl包含在cuda里,只需配置一下即可。

包括两部分,

(1)确认:

1 opencl header -> /usr/local/include

将opencl头文件放入/usr/include

sudo cp -a /usr/local/cuda-9.0/include/CL /usr/local/include

2 opencl libray -> /usr/lib

将opencl库文件放入/usr/lib

sodu cp -a /usr/local/cuda-9.0/lib64/* /usr/lib

(2)修改/etc/ls.so.conf,在其中添加cuda lib路径

sudo echo '/usr/local/cuda-8.0/lib64/' >> /etc/ld.so.conf

并 sudo ldconfig使之生效

四、测试cudnn是否安装成功

终端中输入如下:

cd /usr/local/cuda/samples/1_Utilities/deviceQuery sudo make ./deviceQuery

显示一堆文字,最后出现"Result = PASS"即为成功。

五、测试opencl效果

#include #include #include #ifdef MAC #include #else #include #endif int main() { /* Host data structures */ cl_platform_id *platforms; //每一个cl_platform_id 结构表示一个在主机上的OpenCL执行平台,就是指电脑中支持OpenCL的硬件,如nvidia显卡,intel CPU和显卡,AMD显卡和CPU等 cl_uint num_platforms; cl_int i, err, platform_index = -1; /* Extension data */ char* ext_data; size_t ext_size; const char icd_ext[] = "cl_khr_icd"; //要使platform工作,需要两个步骤。1 需要为cl_platform_id结构分配内存空间。2 需要调用clGetPlatformIDs初始化这些数据结构。一般还需要步骤0:询问主机上有多少platforms /* Find number of platforms */ //返回值如果为-1就说明调用函数失败,如果为0标明成功 //第二个参数为NULL代表要咨询主机上有多少个platform,并使用num_platforms取得实际flatform数量。 //第一个参数为1,代表我们需要取最多1个platform。可以改为任意大如:INT_MAX整数最大值。但是据说0,否则会报错,实际测试好像不会报错。下面是步骤0:询问主机有多少platforms err = clGetPlatformIDs(5, NULL, &num_platforms); if(err < 0) { perror("Couldn't find any platforms."); exit(1); } printf("I have platforms: %d\n", num_platforms); //本人计算机上显示为2,有intel和nvidia两个平台 /* Access all installed platforms */ //步骤1 创建cl_platform_id,并分配空间 platforms = (cl_platform_id*) malloc(sizeof(cl_platform_id) * num_platforms); //步骤2 第二个参数用指针platforms存储platform clGetPlatformIDs(num_platforms, platforms, NULL); /* Find extensions of all platforms */ //获取额外的平台信息。上面已经取得了平台id了,那么就可以进一步获取更加详细的信息了。 //一个for循环获取所有的主机上的platforms信息 for(i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3